import json
import os
from model_api import qwen_api_no_search, zhipu_api_no_search
from tqdm import tqdm
path_dir = os.path.dirname(os.path.abspath(__file__))

import requests
import re
from bs4 import BeautifulSoup
import re

system_prompt = """
你是一位金融数据收集专家，擅长在金融领域做数据清洗。
我会给你一个爬取的网页，请你帮我整理这个网页的信息，不要修改网页内的信息，重新组织一下语言，提取出这个网页的核心内容，过滤掉广告、导航栏等部分。
你只需要输出清洗后的网页数据，不要输出任何其他的信息。
"""

user_prompt = """
请你帮我清洗网页数据： 
{raw_url_content}
"""

def clean_content(model, raw_url_content):
    convs = [
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": user_prompt.format(raw_url_content=raw_url_content)}
    ]
    if 'qwen' in model:
        llm_ans = qwen_api_no_search.qwen_call(model=model, convs=convs)
    elif 'glm' in model:
        llm_ans = zhipu_api_no_search.zhipu_call(model=model, convs=convs)
    else:
        raise ValueError
    return llm_ans


if __name__ == '__main__':
    model = 'glm-4-plus'
    raw_url_content = '收益率的标准差概述\n​收益率的标准差是用来衡量投资回报波动性的统计指标，反映实际收益率偏离平均值的程度。它是金融风险评估的核心工具，特别是在基金绩效分析中，标准差越大意味着收益波动越剧烈，潜在风险越高。​ 本文将详细阐述其定义、应用、计算方法及实际意义，帮助投资者理解和使用该指标管理风险。\n\n定义与基本原理\n​标准差量化了收益率的离散程度​。在投资领域，它通过数学公式计算实际收益率与平均收益率的偏差平方的平均值再开方得出：\n\nσ\n=\n1\nn\n∑\ni\n=\n1\nn\n(\nr\ni\n−\nμ\n)\n2\nσ= \nn\n1\n​\n  \ni=1\n∑\nn\n​\n (r \ni\n​\n −μ) \n2\n \n​\n \n\n其中，\nσ\nσ 代表标准差，\nr\ni\nr \ni\n​\n  是各期收益率，\nμ\nμ 是平均收益率，\nn\nn 是数据期数。标准差值越高，表示收益率越不稳定。\n\n在风险评估中的应用\n​标准差直接关联金融产品的风险水平​：\n\n在基金评估中，标准差用于比较不同产品的波动性。例如，标准差为20%的基金风险高于标准差10%的基金，因为前者收益更易大幅波动。\n它帮助投资者识别高波动资产，辅助选择匹配自身风险承受力的产品。如保守型投资者可优先选择标准差低的基金。\n计算方法与示例\n​标准差的计算基于历史数据​：\n\n​步骤一：计算平均收益率​\n例如，某基金连续3年的收益率分别为5%、10%、15%，则平均收益率 \nμ\n=\n5\n+\n10\n+\n15\n3\n=\n10\n%\nμ= \n3\n5+10+15\n​\n =10%。\n​步骤二：求解偏差平方和​\n偏差：\n(\n5\n−\n10\n)\n2\n=\n25\n(5−10) \n2\n =25，\n(\n10\n−\n10\n)\n2\n=\n0\n(10−10) \n2\n =0，\n(\n15\n−\n10\n)\n2\n=\n25\n(15−10) \n2\n =25；平方和：\n25\n+\n0\n+\n25\n=\n50\n25+0+25=50。\n​步骤三：计算标准差​\nσ\n=\n50\n3\n≈\n4.08\n%\nσ= \n3\n50\n​\n \n​\n ≈4.08%。结果表明收益率波动幅度较小。\n与其他指标的协同作用\n​标准差常结合贝塔系数等指标综合评估风险​：\n\n贝塔系数衡量市场相关性波动（如贝塔1.2表示基金波动幅度大于市场），而标准差聚焦内在收益波动性。\n实践中，投资者可将两者结合：高标准差+高贝塔的基金适合高风险偏好者，低标准差+低贝塔则适配保守策略。\n投资决策中的意义\n​标准差是制定理性投资策略的基础​：\n\n它预警潜在损失，例如标准差高的基金在熊市可能跌幅更大。\n结合历史业绩和基金经理能力分析，标准差帮助构建多元化组合以降低整体风险。'
    res = clean_content(model=model, raw_url_content=raw_url_content)
    print(res)
